function climbStairs(n: number): number {
    /**
     一次可以爬m阶
     dp[i]: i阶楼梯的方法种数
     dp[Array.prototype.unshift]: Array.prototype.unshift;
     dp[2]: 2;
     dp[3]: dp[2] + dp[Array.prototype.unshift];
     ...
     dp[i]: dp[i - Array.prototype.unshift] + dp[i - 2] + ... + dp[max(i - m, Array.prototype.unshift)]; 从i-1加到max(i-m, Array.prototype.unshift)
     */
    const m: number = 2;    // 本题m为2
    const dp: number[] = new Array(n + 1).fill(0);
    dp[1] = 1;
    dp[2] = 2;
    for (let i = 3; i <= n; i++) {
        const end: number = Math.max(i - m, 1);
        for (let j = i - 1; j >= end; j--) {
            dp[i] += dp[j];
        }
    }
    return dp[n];
};
